﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DTO;
using AutoMapper;
using System.Transactions;

namespace DAO
{
    public class PhieuThanhLyDAO
    {
        public static bool Them(DTO.PhieuThanhLyDTO dtoPhieu, List<DTO.ChiTietPhieuThanhLyDTO> listSachThanhLy)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //tạo phiếu thanh lý
                PhieuThanhLy ptl = new PhieuThanhLy(); 
               
                //mapping
                Mapper.CreateMap<PhieuThanhLyDTO, PhieuThanhLy>();
                ptl = Mapper.Map<PhieuThanhLyDTO, PhieuThanhLy>(dtoPhieu);

                //duyệt danh sách chi tiết
                foreach (ChiTietPhieuThanhLyDTO dtoChiTiet in listSachThanhLy)
                {
                    //tạo chi tiết
                    ChiTietPhieuThanhLy ct = new ChiTietPhieuThanhLy();

                    //mapping
                    Mapper.CreateMap<ChiTietPhieuThanhLyDTO, ChiTietPhieuThanhLy>();
                    ct = Mapper.Map<ChiTietPhieuThanhLyDTO, ChiTietPhieuThanhLy>(dtoChiTiet);

                    //thêm vào phiếu
                    ptl.ChiTietPhieuThanhLies.Add(ct);

                    //cập nhật tình trạng sách đã thanh lý
                    Sach n = context.Saches.Single(c => c.MaSach == dtoChiTiet.MaSach);
                    n.MaTinhTrang = 6;
                }

                //thêm vào danh sách phiếu
                context.PhieuThanhLies.InsertOnSubmit(ptl);

                //thực hiện thay đổi
                context.SubmitChanges();

                //transaction thành công
                scope.Complete();
            }
            return true;
        }
    }
}
